//
//  CheckMobile.m
//  KeleAppProject
//
//  Created by Cen Zhou on 2018/1/11.
//  Copyright © 2018年 Cen Zhou. All rights reserved.
//

#import "CheckMobile.h"
#import <sys/utsname.h>


@interface CheckMobile()
//位置管理者
@property (nonatomic, strong) CLLocationManager *mgr;
@end


@implementation CheckMobile
+ (BOOL)isJailbreak
{
    NSArray *filePaths = @[@"/Applications/Cydia.app", @"/Library/MobileSubstrate/MobileSubstrate.dylib",
                           @"/bin/bash", @"/usr/sbin/sshd", @"/etc/apt"];
    for (int i = 0; i < filePaths.count; i++) {
        if([[NSFileManager defaultManager] fileExistsAtPath:filePaths[i]]){
            return YES;
        }
    }
    return NO;
}

+ (NSString *)iPhoneType
{
    struct utsname systemInfo;
    uname(&systemInfo);
    NSString *platform = [NSString stringWithCString:systemInfo.machine encoding:NSASCIIStringEncoding];
    if([platform isEqualToString:@"iPhone1,1"]){
        return @"iPhone 2G";
    }else if ([platform isEqualToString:@"iPhone1,2"]){
        return @"iPhone 3G";
    }else if ([platform isEqualToString:@"iPhone2,1"]){
        return @"iPhone 3GS";
    }else if ([platform isEqualToString:@"iPhone3,1"]){
        return @"iPhone 4";
    }else if ([platform isEqualToString:@"iPhone3,2"]){
        return @"iPhone 4";
    }else if ([platform isEqualToString:@"iPhone4,1"]){
        return @"iPhone 4S";
    }else if ([platform isEqualToString:@"iPhone5,1"]){
        return @"iPhone 5";
    }else if ([platform isEqualToString:@"iPhone5,2"]){
        return @"iPhone 5";
    }else if ([platform isEqualToString:@"iPhone5,3"]){
        return @"iPhone 5C";
    }else if ([platform isEqualToString:@"iPhone5,4"]){
        return @"iPhone 5C";
    }else if ([platform isEqualToString:@"iPhone6,1"]){
        return @"iPhone 5S";
    }else if ([platform isEqualToString:@"iPhone6,2"]){
        return @"iPhone 5S";
    }else if ([platform isEqualToString:@"iPhone7,1"]){
        return @"iPhone 6 Plus";
    }else if ([platform isEqualToString:@"iPhone7,2"]){
        return @"iPhone 6";
    }else if ([platform isEqualToString:@"iPhone8,1"]){
        return @"iPhone 6S";
    }else if ([platform isEqualToString:@"iPhone8,2"]){
        return @"iPhone 6S Plus";
    }else if ([platform isEqualToString:@"iPhone8,4"]){
        return @"iPhone SE";
    }else if ([platform isEqualToString:@"iPhone9,1"]){
        return @"iPhone 7";
    }else if ([platform isEqualToString:@"iPhone9,2"]){
        return @"iPhone 7 Plus";
    }else{
        return @"other";
    }
}

+ (NSString *)iPhoneSystemInfo
{
    NSString *OSName = [[UIDevice currentDevice] systemName];
    NSString *OSVersion = [[UIDevice currentDevice] systemVersion];
    return [NSString stringWithFormat:@"%@ %@", OSName, OSVersion];
}

+ (NSString *)networkType
{
    NSArray *subviews = [[[[UIApplication sharedApplication] valueForKey:@"statusBar"] valueForKey:@"foregroundView"]subviews];
    NSNumber *dataNetworkItemView = nil;
    
    for (id subview in subviews) {
        if([subview isKindOfClass:[NSClassFromString(@"UIStatusBarDataNetworkItemView") class]]) {
            dataNetworkItemView = subview;
            break;
        }
    }
    
    switch ([[dataNetworkItemView valueForKey:@"dataNetworkType"] integerValue]) {
        case 0:
            return @"无服务";
            break;
            
        case 1:
            return @"2G";
            break;
            
        case 2:
            return @"3G";
            break;
            
        case 3:
            return @"4G";
            break;
            
        case 4:
            return @"LTE";
            break;
            
        case 5:
            return @"Wifi";
            break;
            
        default:
            return @"";
            break;
    }
}

+ (BOOL)isEmailAdress:(NSString *)email
{
    NSString *emailCheck = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES%@",emailCheck];
    return [emailTest evaluateWithObject:email];
}

+ (BOOL)isPhoneNo:(NSString *)phoneNO
{
    NSString *phoneRegex = @"[0-9]{1,15}";
    NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", phoneRegex];
    return [phoneTest evaluateWithObject:phoneNO];
}

+(BOOL)isValidateEmail:(NSString *)email {
    NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
    return [emailTest evaluateWithObject:email];
}

+ (BOOL)isMobileNumber:(NSString *)mobileNum
{
    
    /**
     * 手机号码
     * 移动：134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188
     * 联通：130,131,132,152,155,156,185,186
     * 电信：133,1349,153,180,189
     */
    NSString * MOBILE = @"^1(3[0-9]|5[0-35-9]|8[025-9])\\d{8}$";
    
    /**
     10         * 中国移动：China Mobile
     11         * 134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188
     12         */
    NSString * CM = @"^1(34[0-8]|(3[5-9]|5[017-9]|8[278])\\d)\\d{7}$";
    
    /**
     15         * 中国联通：China Unicom
     16         * 130,131,132,152,155,156,185,186
     17         */
    NSString * CU = @"^1(3[0-2]|5[256]|8[56])\\d{8}$";
    
    /**
     20         * 中国电信：China Telecom
     21         * 133,1349,153,177,180,189
     22         */
    NSString * CT = @"^1((33|53|77|8[09])[0-9]|349)\\d{7}$";
    
    /**
     25         * 大陆地区固话及小灵通
     26         * 区号：010,020,021,022,023,024,025,027,028,029
     27         * 号码：七位或八位
     28         */
    //    NSString * PHS = @"^0(10|2[0-5789]|\\d{3})\\d{7,8}$";
    
    NSPredicate *regextestmobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", MOBILE];
    NSPredicate *regextestcm = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CM];
    NSPredicate *regextestcu = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CU];
    NSPredicate *regextestct = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CT];
    //    NSPredicate *regextestPHS = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", PHS];
    
    //    if(([regextestmobile evaluateWithObject:mobileNum] == YES)
    //       || ([regextestcm evaluateWithObject:mobileNum] == YES)
    //       || ([regextestct evaluateWithObject:mobileNum] == YES)
    //       || ([regextestcu evaluateWithObject:mobileNum] == YES)
    //       || ([regextestPHS evaluateWithObject:mobileNum] == YES)){
    //        return YES;
    //    }else{
    //        return NO;
    //    }
    
    if(([regextestmobile evaluateWithObject:mobileNum] == YES)
       || ([regextestcm evaluateWithObject:mobileNum] == YES)
       || ([regextestct evaluateWithObject:mobileNum] == YES)
       || ([regextestcu evaluateWithObject:mobileNum] == YES)){
        return YES;
    }else{
        return NO;
    }
}

+ (NSString *)appVersion
{
    NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];
    // app版本
    NSString *app_Version = [infoDictionary objectForKey:@"CFBundleShortVersionString"];
    return app_Version;
}
@end
